1. Field of the Invention
The present invention relates to a method and apparatus for synchronizing a system to self-clocking data. More particularly, the present invention relates to a disk drive system which uses precoding and self-clocking data and the method and apparatus for the synchronization of the system to accurately read and write data.
2. Art Background
In systems which use precoding and self-clocking data, such as a disk drive system, there is a need to initiate data transfer by first synchronizing and correctly phasing the system clock for extracting data using startup preamble and synch fields. Once the data is synchronized, the start of the data transfer is identified and distinguished from data in the startup preamble and synch fields and read operations can be performed accurately.
Typically the bit string containing the preamble, EOP (end of preamble) mark and data, plus any subsequent information such as error correction codes (ECC) is then fed into a data separator to extract a clock from the detected signals and an EOP detector to detect the synch field. When the detector finds a match between the expected EOP and the actual EOP, the end of preamble is noted and subsequently all remaining bits are transferred to the data decoder, ENDEC, for further processing as user data or other data used by the system. The preamble and EOP are therefore effectively stripped away and not used again until the next read operation.
The identification of the start of the data transfer is typically performed with the aid of an "end of preamble" (EOP) mark or "byte synch" mark. Data itself typically is not used since it might happen to look like the preamble near the junction between the preamble and data. Problems arise when signals are small relative to received noise because there is considerable uncertainty about the received data, the preamble and the EOP mark which is used to distinguish between the end of the preamble and the beginning of data.
Prior techniques distinguish between preamble, end of preamble (EOP) mark and data even when the quality of each is poor. However, there is a cost of logic and overhead to compensate for poor quality signals. For simple systems with very low error rates, a short EOP is typically selected and the system looks in the EOP detector for a perfect match between the expected EOP and actual EOP. As the bit string is injected into the EOP detector, each contiguous set of bits (a bit substring) of length equal to the length of the EOP is compared to the expected EOP. As each new bit is entered, the comparison is repeated so that all possible EOP candidates are examined.
For systems with high error rates, there is a significant probability that a perfect match will not almost always be found. A loss of data will occur when a match is not found because the start of data cannot be correctly identified. Therefore it is preferable that an autocorrelation process is used to alleviate the need for a perfect match. An EOP is selected which has good autocorrelation properties relative to the preamble so that a "most likely" identification can be applied. To find such an EOP, exhaustive computer searches are performed which generate trial patterns and associated weights of perfect synchronization of the pattern and weights of all imperfect synchronizations. Preferably a pattern is selected for the EOP which exhibits the largest minimum difference in weights between perfect synchronization and imperfect synchronizations. The best pattern is one which simultaneously provides the needed difference, which is typically a function of the length of the pattern and expected error rate, and adds the fewest extra overhead bits and requires the least cost of hardware to implement.
The classical autocorrelation equation for discrete time signals is ##EQU1## where R.sub.xx (k) is the autocorrelation value, x(t) is the signal pattern being examined, t is discrete time in T units, k is the discrete time offset between signal pattern x(t) and x(t-k) in T units, and N is the length of x(t). There are multiple uses cited in the literature for the autocorrelation function but one such use is to detect in time when a specific signal pattern x(t) has been received. This may typically be done by examining values of R.sub.xx (k) for all possible values of k, then setting a threshold for R.sub.xx (k) such that there is equal distance between R.sub.xx (O) and the next largest value of R.sub.xx (k). When searching in time for existence of the true x(t), R.sub.xx (k) is repeatedly calculated and examined at all time intervals T until a value is found which exceeds the threshold. When the threshold is exceeded, it is most likely that x(t) has been found and that k=0. For such a use, it is desirable that R.sub.xx (O) and the next largest R.sub.xx (k) exhibit as much distance as possible. This provides the greatest tolerance for signal error in the presence of noise. To do so, x(t) is selected to provide the largest distance for a given length N.
Therefore, an EOP is selected which permits the best compromise between a large degree of imperfections but still can be recognized as the EOP and not as part of a preamble and an acceptable cost of hardware and overhead bits. Both conditions must be considered. In traditional practice, all prior bit substrings of length equal to EOP are compared to the expected EOP as well as the legitimate EOP bit substring when it arrives. The amount of logic required may be significant to accept a less than perfect EOP match since all legitimate combinations must be acceptable. For example, if there are m bits of an EOP examined and any n bits which match are acceptable to detect the EOP, then there ##EQU2## legitimate combinations. To simultaneously examine each combination requires an n input AND gate and an OR tree sufficiently large to accumulate inputs from all AND gates. This is in addition to whatever detection logic is already present to recognize bit matches. For example, if m=10 and n=6, there are ##EQU3## combinations requiring 210, 6 input AND gates and 42, 6 input OR gates. It is obvious that much larger logic arrays may be needed and the size of such arrays scale factorially as the number of bits examined increases. Therefore, it is desirable to find a strategy and an EOP which minimizes the number of bits m.